home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib12.dsk / SORT DEMO PROGRAM 2.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  48 lines

  1. 0  HOME : GOTO 100
  2. 10 Z = 1:SWAP = 768
  3. 20 Z = 3 *Z +1: IF Z <NUM  THEN 20
  4. 30 Z = (Z -1)/3: IF Z <1  THEN  RETURN 
  5. 40  FOR I = Z +L TO H:J = I -Z
  6. 50 K = J +Z: IF A = ( MID$ (NA$(J),M,N) > MID$ (NA$(K),M,N))  THEN  CALL SWAP,NA$(J),NA$(K):J = J -Z: IF J > = L  THEN 50
  7. 60  NEXT I: GOTO 30
  8. 100  FOR I = 768 TO 799: READ J: POKE I,J: NEXT 
  9. 105  DATA  32,190,222,32,227,223,133,133,132,134,32,190,222,32,227,223,160,2,177,133,72,177,131,145,133,104,145,131,136,16,243,96
  10. 110 :
  11. 120 :
  12. 130  REM  FIX RANDOM NUMBER GENERATOR
  13. 140 :
  14. 150 :
  15. 160  POKE 201,128: POKE 202,79: POKE 203,199: POKE 204,82: POKE 205,255
  16. 180  DIM NA$(500),B$(500)
  17. 190 :
  18. 200 :
  19. 210  REM  GENERATE RANDOM WORDS TO SORT
  20. 220 :
  21. 230 :
  22. 240  HOME : VTAB 12: HTAB 12: INPUT "HOW MANY WORDS? ";X$:NUM =  VAL(X$): IF NUM <1  OR NUM >500  THEN  PRINT  CHR$(7): GOTO 240
  23. 250  VTAB 12: HTAB 7: FLASH : PRINT "GENERATING "NUM" RANDOM WORDS": NORMAL 
  24. 260  FOR I = 1 TO NUM:A$ = "": FOR J = 1 TO 10:A$ = A$ + CHR$( INT( RND(1) *26 +65)): NEXT :NA$(I) = A$:B$(I) = A$: NEXT 
  25. 270 :
  26. 280 :
  27. 290  REM  IF YOU WISH TO TIME THE SORT
  28. 300  REM  START THE TIMER AS SOON AS THE
  29. 310  REM  WORD SORTING STARTS TO FLASH
  30. 320 :
  31. 330 :
  32. 340  HOME : VTAB 12: HTAB 6: PRINT "PRESS ANY KEY TO BEGIN SORT"
  33. 350 X =  PEEK( -16384): IF X <128  THEN 350
  34. 360  POKE  -16368,0
  35. 370 :
  36. 380 :
  37. 390  REM  SORT INTO ASCENDING ORDER
  38. 400 :
  39. 410 :
  40. 420  HOME :L = 1:H = NUM:M = 1:N = 10:A = 1:X =  FRE(0): VTAB 12: HTAB 17: FLASH : PRINT "SORTING" CHR$(7): NORMAL : GOSUB 10: PRINT  CHR$(7)
  41. 430 :
  42. 440 :
  43. 450  REM  PRINT OUT SORTED AND UNSORTED WORDS
  44. 460 :
  45. 470 :
  46. 480  HOME : HTAB 10: INVERSE : PRINT NUM" RANDOM WORDS": PRINT : HTAB 8: PRINT "UNSORTED";: HTAB 22: PRINT "SORTED": NORMAL : POKE 34,4
  47. 490  HOME : FOR I = 1 TO NUM: PRINT  RIGHT$("    " + STR$(I),4)". "B$(I);: HTAB 20: PRINT NA$(I): NEXT 
  48. 500  PRINT : HTAB 12: PRINT "ALL DONE ...": FOR I = 1 TO 5000: NEXT : TEXT : CLEAR : GOTO 180